/**********************************************
	* @author: Jun
	* @time  : 2018/8/3
	* @brief ：图片管理处理接口
	* @note  ：none
**********************************************/
#ifndef _OC_PIC_H_
#define _OC_PIC_H_

#include "../oc_user/oc_config.h"
#include "../oc_user/oc_user.h"
#include "../oc_user/oc_base.h"

#define Bit2  0
#define Bit16 1
#define Bit24 2

//BMP文件头
typedef struct 
{ 
uint16_t bfType;        //2Bytes，必须为"BM"，即0x424D 才是Windows位图文件
uint32_t bfSize;        //4Bytes，整个BMP文件的大小
uint16_t bfReserved1;   //2Bytes，保留，为0
uint16_t bfReserved2;   //2Bytes，保留，为0
uint32_t bfOffBits;     //4Bytes，文件起始位置到图像像素数据的字节偏移量
} oc_pic_bmp_heard_t;

//BMP信息头
typedef struct 
{
uint32_t  biSize;          //4Bytes，INFOHEADER结构体大小，存在其他版本I NFOHEADER，用作区分
uint32_t   biWidth;        //4Bytes，图像宽度（以像素为单位）
uint32_t   biHeight;       //4Bytes，图像高度，+：图像存储顺序为Bottom2Top，-：Top2Bottom
uint8_t   biPlanes;        //2Bytes，图像数据平面，BMP存储RGB数据，因此总为1
uint8_t   biBitCount;      //2Bytes，图像像素位数
uint32_t  biCompression;   //4Bytes，0：不压缩，1：RLE8，2：RLE4
uint32_t  biSizeImage;     //4Bytes，4字节对齐的图像数据大小
uint32_t   biXPelsPerMeter;//4Bytes，用象素/米表示的水平分辨率
uint32_t   biYPelsPerMeter;//4Bytes，用象素/米表示的垂直分辨率
uint32_t  biClrUsed;       //4Bytes，实际使用的调色板索引数，0：使用所有的调色板索引
uint32_t biClrImportant;   //4Bytes，重要的调色板索引数，0：所有的调色板索引都重要
}oc_bmpInforheard_t;

/**********************************************
 * @brief ：显示一个输入图形数组
 * @param : xpos:      图片显示左上角X轴位置
 * @param : ypos:      图片显示左上角Y轴位置
 * @param : pic:       图像数组
 * @note  ：使用IMG2LCD软件转换,要包含图像头数据
 * @retval: 绘制成功返回oc_OK，失败返回oc_ON
**********************************************/
uint8_t oc_pic_img2lcd(uint16_t xpos, uint16_t ypos,const char *pic);

/**********************************************
 * @brief ：显示BMP图片，以数组方式，文件形式需要读取二进制文件
 * @param : xpos:      图片显示左上角X轴位置
 * @param : ypos:      图片显示左上角Y轴位置
 * @param : pic:       图像数组
 * @note  ：直接转换BMP原始数据
 * @retval: 绘制成功返回oc_OK，失败返回oc_ON
**********************************************/
uint8_t oc_pic_bmp(uint16_t xpos, uint16_t ypos,const char *pic);
	
#endif

